// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
/*引入axios模块*/
import axios from 'axios'

Vue.use(ElementUI);
Vue.config.productionTip = false
//全局设置请求地址url
axios.defaults.baseURL="/shop";
//全局设置post请求头部的内容类型
axios.defaults.headers.post["Content-Type"] = "application/json";
//全局设置put请求头部的内容类型
axios.defaults.headers.put["Content-Type"] = "application/json";
/*请求拦截器*/
axios.interceptors.request.use(function (rs) {
    //请求之前做什么事情
   //获取请求的token
  const token = localStorage.getItem("token");

  if(token!=null){
    //设置头部token
    rs.headers.Authorization=token;
  }

  return rs;
},function (err) {
  //请求发送错误做什么事情
  //发行
  return Promise.reject(err);
})


//设置axios的全局变量
Vue.prototype.$http=axios;

/*导航钩子函数*/
/* to 要到达的下一个页面的路由对象*/
/* from  从上一个页面过来的路由对象*/
/* next 定义要调转的路由地址*/
// router.beforeEach(function (to,from,next) {
//   //获取用户是否登录
//   const name = sessionStorage.getItem("userName");
//   console.log("name="+name);
//   console.log("=="+to.meta.isLogin)
//   //判断那些需要拦截
//   if(to.meta.isLogin){
//     //判断是否登录过
//     if(name==null){
//       //回到登录页面
//       next("/");
//     }else{
//       next();
//     }
//   }else{//不拦截
//     console.log("放行")
//     next();
//   }
//
// });
/*自定义全局指令:实现文本框自动获取焦点*/
// Vue.directive("focus",{
//   //当前的html元素对象
//    inserted:function (el) {
//          //获取焦点
//        el.focus();
//    }
// })

/*定义全局指令：控制权限指令*/

Vue.directive("myPower",{
    inserted:function (el,binding) {
      //获取用户的角色信息
      const role = sessionStorage.getItem("power");
      console.log("当前用户角色是="+role);
      if(role!=null){
        console.log("当前功能允许访问的角色是="+binding.value);
        if(binding.value==role){
          console.log("可以访问");
          //设置显示当前元素
          el.style.display ='block';
        }else{
          console.log("不能访问");
          //设置不显示当前元素
          el.style.display ='none';
        }

      }
    }
})
/* eslint-disable no-new */
var _this = new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
/*响应拦截*/
axios.interceptors.response.use(function (rs) {
  if(rs.data.code==500){
    _this.$message(rs.data.msg);
  }
  if(rs.data.code==300){
    _this.$alert(rs.data.msg);
    //回到登录页面
    _this.$router.replace("/");
  }
  return rs;

},function (err) {
  //请求发送错误做什么事情
  //发行
  return Promise.reject(err);
})
